package util.estatisticas.metricas;

import java.util.ArrayList;
import java.util.Collections;

public class Mediana {
	
	private EstimadorMedia estimadorMedia;
	
	private EstimadorVariancia estimadorVariancia;

	public Mediana() {
		this.estimadorMedia = new EstimadorMedia();
		this.estimadorVariancia = new EstimadorVariancia();
	}
	
	public void atualiza(ArrayList<Double> valores) {
		Collections.sort(valores);
		
		double mediana;
		if (valores.size() % 2 == 0) {
			int posicaoMediana = (valores.size() + 1) / 2;
			posicaoMediana--; //nosso ArrayList começa do zero
			mediana = valores.get(posicaoMediana);
		} else {
			int posicao1 = valores.size() / 2;
			posicao1--; //nosso ArrayList começa do zero
			int posicao2 = posicao1 + 1; 
			mediana = valores.get(posicao1) + valores.get(posicao2);
			mediana /= 2;
		}
		
		this.estimadorMedia.atualiza(mediana);
		this.estimadorVariancia.atualiza(mediana);
	}
	
	public double getEstimadorMedia() {
		return estimadorMedia.getEstimador();
	}

	public double getEstimadorVariancia() {
		return estimadorVariancia.getEstimador();
	}

}
